//
// File: demo01.h
//
// Code generated for Simulink model 'demo01'.
//
// Model version                  : 1.8
// Simulink Coder version         : 9.7 (R2022a) 13-Nov-2021
// C/C++ source code generated on : Tue May  7 21:48:32 2024
//
// Target selection: ert.tlc
// Embedded hardware selection: Generic->Unspecified (assume 32-bit Generic)
// Code generation objectives: Unspecified
// Validation result: Not run
//
#ifndef RTW_HEADER_demo01_h_
#define RTW_HEADER_demo01_h_
#include "rtwtypes.h"
#include "slros_initialize.h"
#include "demo01_types.h"
#include <stddef.h>

// Macros for accessing real-time model data structure
#ifndef rtmGetErrorStatus
#define rtmGetErrorStatus(rtm)         ((rtm)->errorStatus)
#endif

#ifndef rtmSetErrorStatus
#define rtmSetErrorStatus(rtm, val)    ((rtm)->errorStatus = (val))
#endif

// Block signals (default storage)
struct B_demo01_T {
  SL_Bus_demo01_geometry_msgs_PoseStamped In1;// '<S57>/In1'
  SL_Bus_demo01_geometry_msgs_PoseStamped In1_k;// '<S56>/In1'
  SL_Bus_demo01_geometry_msgs_PoseStamped b_varargout_2;
  SL_Bus_demo01_geometry_msgs_Pose BusAssignment1;// '<Root>/Bus Assignment1'
  SL_Bus_demo01_geometry_msgs_Twist BusAssignment;// '<Root>/Bus Assignment'
};

// Block states (default storage) for system '<Root>'
struct DW_demo01_T {
  ros_slroscpp_internal_block_P_T obj; // '<S5>/SinkBlock'
  ros_slroscpp_internal_block_P_T obj_e;// '<S4>/SinkBlock'
  ros_slroscpp_internal_block_S_T obj_n;// '<S7>/SourceBlock'
  ros_slroscpp_internal_block_S_T obj_e3;// '<S6>/SourceBlock'
  real_T Integrator_DSTATE[2];         // '<S39>/Integrator'
  real_T Filter_DSTATE[2];             // '<S34>/Filter'
};

// Parameters (default storage)
struct P_demo01_T_ {
  real_T DiscretePIDController_D;     // Mask Parameter: DiscretePIDController_D
                                         //  Referenced by: '<S33>/Derivative Gain'

  real_T DiscretePIDController_I;     // Mask Parameter: DiscretePIDController_I
                                         //  Referenced by: '<S36>/Integral Gain'

  real_T DiscretePIDController_InitialCo;
                              // Mask Parameter: DiscretePIDController_InitialCo
                                 //  Referenced by: '<S34>/Filter'

  real_T DiscretePIDController_Initial_d;
                              // Mask Parameter: DiscretePIDController_Initial_d
                                 //  Referenced by: '<S39>/Integrator'

  real_T DiscretePIDController_N;     // Mask Parameter: DiscretePIDController_N
                                         //  Referenced by: '<S42>/Filter Coefficient'

  real_T DiscretePIDController_P;     // Mask Parameter: DiscretePIDController_P
                                         //  Referenced by: '<S44>/Proportional Gain'

  SL_Bus_demo01_geometry_msgs_PoseStamped Out1_Y0;// Computed Parameter: Out1_Y0
                                                     //  Referenced by: '<S56>/Out1'

  SL_Bus_demo01_geometry_msgs_PoseStamped Constant_Value;// Computed Parameter: Constant_Value
                                                            //  Referenced by: '<S6>/Constant'

  SL_Bus_demo01_geometry_msgs_PoseStamped Out1_Y0_p;// Computed Parameter: Out1_Y0_p
                                                       //  Referenced by: '<S57>/Out1'

  SL_Bus_demo01_geometry_msgs_PoseStamped Constant_Value_n;// Computed Parameter: Constant_Value_n
                                                              //  Referenced by: '<S7>/Constant'

  SL_Bus_demo01_geometry_msgs_Pose Constant_Value_h;// Computed Parameter: Constant_Value_h
                                                       //  Referenced by: '<S2>/Constant'

  SL_Bus_demo01_geometry_msgs_Twist Constant_Value_d;// Computed Parameter: Constant_Value_d
                                                        //  Referenced by: '<S1>/Constant'

  real_T Integrator_gainval;           // Computed Parameter: Integrator_gainval
                                          //  Referenced by: '<S39>/Integrator'

  real_T Filter_gainval;               // Computed Parameter: Filter_gainval
                                          //  Referenced by: '<S34>/Filter'

};

// Real-time Model Data Structure
struct tag_RTM_demo01_T {
  const char_T * volatile errorStatus;
};

// Block parameters (default storage)
#ifdef __cplusplus

extern "C" {

#endif

  extern P_demo01_T demo01_P;

#ifdef __cplusplus

}
#endif

// Block signals (default storage)
#ifdef __cplusplus

extern "C" {

#endif

  extern struct B_demo01_T demo01_B;

#ifdef __cplusplus

}
#endif

// Block states (default storage)
extern struct DW_demo01_T demo01_DW;

#ifdef __cplusplus

extern "C" {

#endif

  // Model entry point functions
  extern void demo01_initialize(void);
  extern void demo01_step(void);
  extern void demo01_terminate(void);

#ifdef __cplusplus

}
#endif

// Real-time Model object
#ifdef __cplusplus

extern "C" {

#endif

  extern RT_MODEL_demo01_T *const demo01_M;

#ifdef __cplusplus

}
#endif

//-
//  These blocks were eliminated from the model due to optimizations:
//
//  Block '<Root>/Scope' : Unused code path elimination


//-
//  The generated code includes comments that allow you to trace directly
//  back to the appropriate location in the model.  The basic format
//  is <system>/block_name, where system is the system number (uniquely
//  assigned by Simulink) and block_name is the name of the block.
//
//  Use the MATLAB hilite_system command to trace the generated code back
//  to the model.  For example,
//
//  hilite_system('<S3>')    - opens system 3
//  hilite_system('<S3>/Kp') - opens and selects block Kp which resides in S3
//
//  Here is the system hierarchy for this model
//
//  '<Root>' : 'demo01'
//  '<S1>'   : 'demo01/Blank Message'
//  '<S2>'   : 'demo01/Blank Message1'
//  '<S3>'   : 'demo01/Discrete PID Controller'
//  '<S4>'   : 'demo01/Publish'
//  '<S5>'   : 'demo01/Publish1'
//  '<S6>'   : 'demo01/Subscribe'
//  '<S7>'   : 'demo01/Subscribe1'
//  '<S8>'   : 'demo01/Discrete PID Controller/Anti-windup'
//  '<S9>'   : 'demo01/Discrete PID Controller/D Gain'
//  '<S10>'  : 'demo01/Discrete PID Controller/Filter'
//  '<S11>'  : 'demo01/Discrete PID Controller/Filter ICs'
//  '<S12>'  : 'demo01/Discrete PID Controller/I Gain'
//  '<S13>'  : 'demo01/Discrete PID Controller/Ideal P Gain'
//  '<S14>'  : 'demo01/Discrete PID Controller/Ideal P Gain Fdbk'
//  '<S15>'  : 'demo01/Discrete PID Controller/Integrator'
//  '<S16>'  : 'demo01/Discrete PID Controller/Integrator ICs'
//  '<S17>'  : 'demo01/Discrete PID Controller/N Copy'
//  '<S18>'  : 'demo01/Discrete PID Controller/N Gain'
//  '<S19>'  : 'demo01/Discrete PID Controller/P Copy'
//  '<S20>'  : 'demo01/Discrete PID Controller/Parallel P Gain'
//  '<S21>'  : 'demo01/Discrete PID Controller/Reset Signal'
//  '<S22>'  : 'demo01/Discrete PID Controller/Saturation'
//  '<S23>'  : 'demo01/Discrete PID Controller/Saturation Fdbk'
//  '<S24>'  : 'demo01/Discrete PID Controller/Sum'
//  '<S25>'  : 'demo01/Discrete PID Controller/Sum Fdbk'
//  '<S26>'  : 'demo01/Discrete PID Controller/Tracking Mode'
//  '<S27>'  : 'demo01/Discrete PID Controller/Tracking Mode Sum'
//  '<S28>'  : 'demo01/Discrete PID Controller/Tsamp - Integral'
//  '<S29>'  : 'demo01/Discrete PID Controller/Tsamp - Ngain'
//  '<S30>'  : 'demo01/Discrete PID Controller/postSat Signal'
//  '<S31>'  : 'demo01/Discrete PID Controller/preSat Signal'
//  '<S32>'  : 'demo01/Discrete PID Controller/Anti-windup/Passthrough'
//  '<S33>'  : 'demo01/Discrete PID Controller/D Gain/Internal Parameters'
//  '<S34>'  : 'demo01/Discrete PID Controller/Filter/Disc. Forward Euler Filter'
//  '<S35>'  : 'demo01/Discrete PID Controller/Filter ICs/Internal IC - Filter'
//  '<S36>'  : 'demo01/Discrete PID Controller/I Gain/Internal Parameters'
//  '<S37>'  : 'demo01/Discrete PID Controller/Ideal P Gain/Passthrough'
//  '<S38>'  : 'demo01/Discrete PID Controller/Ideal P Gain Fdbk/Disabled'
//  '<S39>'  : 'demo01/Discrete PID Controller/Integrator/Discrete'
//  '<S40>'  : 'demo01/Discrete PID Controller/Integrator ICs/Internal IC'
//  '<S41>'  : 'demo01/Discrete PID Controller/N Copy/Disabled'
//  '<S42>'  : 'demo01/Discrete PID Controller/N Gain/Internal Parameters'
//  '<S43>'  : 'demo01/Discrete PID Controller/P Copy/Disabled'
//  '<S44>'  : 'demo01/Discrete PID Controller/Parallel P Gain/Internal Parameters'
//  '<S45>'  : 'demo01/Discrete PID Controller/Reset Signal/Disabled'
//  '<S46>'  : 'demo01/Discrete PID Controller/Saturation/Passthrough'
//  '<S47>'  : 'demo01/Discrete PID Controller/Saturation Fdbk/Disabled'
//  '<S48>'  : 'demo01/Discrete PID Controller/Sum/Sum_PID'
//  '<S49>'  : 'demo01/Discrete PID Controller/Sum Fdbk/Disabled'
//  '<S50>'  : 'demo01/Discrete PID Controller/Tracking Mode/Disabled'
//  '<S51>'  : 'demo01/Discrete PID Controller/Tracking Mode Sum/Passthrough'
//  '<S52>'  : 'demo01/Discrete PID Controller/Tsamp - Integral/Passthrough'
//  '<S53>'  : 'demo01/Discrete PID Controller/Tsamp - Ngain/Passthrough'
//  '<S54>'  : 'demo01/Discrete PID Controller/postSat Signal/Forward_Path'
//  '<S55>'  : 'demo01/Discrete PID Controller/preSat Signal/Forward_Path'
//  '<S56>'  : 'demo01/Subscribe/Enabled Subsystem'
//  '<S57>'  : 'demo01/Subscribe1/Enabled Subsystem'

#endif                                 // RTW_HEADER_demo01_h_

//
// File trailer for generated code.
//
// [EOF]
//
